package db

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"time"
)

// 全局私有数据库连接
var iMysqlDb *gorm.DB

// 也可以定义多个数据库连接，比如只读连接池
//var iMysqlDbReadOnly *gorm.DB

func init() {
	MySqlInit()
}

func MySqlInit() {
	dsn := "root:yq24324@tcp(42.193.223.172:3307)/test_01?charset=utf8mb4&parseTime=True&loc=Local"
	mysqlDb, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		fmt.Println("mysql open error ...")
		return
	}
	iMysqlDb = mysqlDb
	sqlDb, err := iMysqlDb.DB()
	if err != nil {
		fmt.Printf("mysql datasource pool get error:%s\n", err)
		return
	}
	// 连接池配置
	// SetMaxIdleConns 设置空闲连接池中连接的最大数量
	sqlDb.SetMaxIdleConns(10)

	// SetMaxOpenConns 设置打开数据库连接的最大数量。
	sqlDb.SetMaxOpenConns(100)

	// SetConnMaxLifetime 设置了连接可复用的最大时间。
	sqlDb.SetConnMaxLifetime(time.Hour)
}

// GetMySqlDb 获取全局数据库连接池
func GetMySqlDb() *gorm.DB {
	return iMysqlDb
}
